﻿Imports System.Configuration


''' <summary>
''' 定义用于提供插件的契约
''' </summary>
''' <remarks>
''' 所有插件，都将通过这个入口向主程序提供插件对象实例
''' </remarks>
Public Interface IPluginProvider






    ''' <summary>
    ''' 提供一个值用来指示插件是否需要配置
    ''' </summary>
    ''' <remarks></remarks>
    ReadOnly Property CanConfigure As Boolean

    ''' <summary>
    ''' 获取用于插件设置界面的配置器
    ''' </summary>
    ''' <returns>
    ''' 一个实现的IPluginConfigurator接口的  System.Windows.Controls.UserControl 对象
    ''' 如果插件不需要设置，则返回Nothing
    ''' </returns>
    ''' <remarks></remarks>
    Function GetConfigurator() As IPluginConfigurator

    ''' <summary>
    ''' 获取用于保存插件设置对象的实例
    ''' </summary>
    ''' <returns>
    ''' 返回一个从ApplicationSettingsBase 派生的自定义强类型对象
    ''' 如果插件不需要设置，则返回Nothing
    ''' </returns>
    ''' <remarks></remarks>
    Function GetSettings() As ApplicationSettingsBase


    ''' <summary>
    ''' 获取提供器所有插件的实力
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function GetPlugins() As IEnumerable(Of IPlugin)




End Interface
